场景:获取竞品小程序的服务协议
微信小程序上线时需要提供用户服务协议和隐私政策条款。虽然可以用 ChatGPT 等 AI 工具生成,但 AI 生成的协议通常不够详尽,无法完全贴合具体业务场景。一个更实用的方法是参考同类竞品的协议内容——它们的法务团队已经完成了大量的合规工作。
问题在于,小程序端的文本内容无法直接复制粘贴(全选无效、右键菜单被禁用),OCR 识别又受限于文章长度。通过接口代理工具拦截小程序的网络请求,可以获取到完整的 HTML 格式协议内容。
代理工具简介
| 工具 | 平台 | 费用 | 说明 |
|---|---|---|---|
| Charles | macOS | 付费(30 天试用) | 功能完善的 HTTP/HTTPS 代理工具 |
| Fiddler | Windows | 免费 | Windows 下最流行的代理抓包工具 |
| Proxyman | macOS | 免费基础版 | macOS 原生,界面现代 |
| mitmproxy | 跨平台 | 开源免费 | 命令行工具,适合自动化场景 |
Charles 抓包流程(macOS)
安装 SSL 证书
小程序的所有请求都走 HTTPS,必须安装 Charles 的 SSL 代理证书才能解密流量。
自动安装方式:Help → SSL Proxying → Install Charles Root Certificate,输入系统密码即可。
手动安装方式(自动安装失败时使用):
- Help → SSL Proxying → Save Charles Root Certificate
- 保存证书文件到本地(如下载目录)
- 打开"钥匙串访问"(Keychain Access)
- 左侧切换到"系统"分类
- 将证书文件拖入证书列表
- 双击证书 → 展开"信任" → 选择"始终信任"
- 证书变为绿色标记,表示已受信任
开启 SSL 代理
- 菜单 Proxy → SSL Proxying Settings
- 勾选 Enable SSL Proxying
- 点击 Add,在 Host 填写目标域名(如
*.pupuapi.com),Port 填写 443 - 点击 OK
也可以通过快捷方式:在 Charles 的请求列表中找到目标域名的请求(显示为 unknown),右键选择 Enable SSL Proxying。
抓取协议内容
- 清空 Charles 请求列表(扫帚图标)
- 开启录制(圆形红色按钮)
- 打开微信小程序,切换协议版本(触发新的网络请求)
- 回到 Charles,找到目标请求(蓝色地球图标,不再是
unknown) - 点击请求 → Content → JSON Text
- 复制完整的响应数据
从响应数据到 Markdown
获取到的 JSON 数据中,data 字段包含 HTML 格式的协议内容。处理步骤:
- 将 JSON 数据粘贴到 VS Code
- 提取
data字段的 HTML 内容 - 全文查找
\"替换为"(去除转义字符) - 保存为
index.html文件 - 补全 HTML5 基本结构(
<!DOCTYPE html>等) - 在浏览器中打开确认格式正确
- 全选复制,粘贴到 Typora 等 Markdown 编辑器
粘贴后格式会自动转换,即可获得结构清晰的 Markdown 文本。接下来用"我司"替换竞品名称,逐条审阅并修改业务相关内容。
工作原理
Charles 作为中间人代理,工作流程如下:
小程序 → Charles(代理)→ 目标服务器
加密连接 解密→再加密
text
- 小程序将请求发送给 Charles(本地代理)
- Charles 与目标服务器建立真实的 HTTPS 连接
- 由于 Charles 的根证书已被系统信任,它可以为小程序签发伪造的证书
- Charles 解密请求和响应,在界面上展示明文数据
- 再将数据转发给小程序
这就是经典的中间人(MITM)原理。SSL 证书信任链的破绽在于客户端是否信任代理工具的根证书。
注意事项
- 仅用于学习和合规参考:获取竞品协议内容用于参考其格式结构和法律条款的完整性,不能直接照搬,需根据自身业务修改
- Charles 试用期:macOS 上 Charles 为付费软件,试用期 30 天,足够学习使用
- 隐私合规:生成的协议需经过法律审核,确保符合《个人信息保护法》《网络安全法》等法规要求
↑